import axios from "axios";
import { message } from 'ant-design-vue'
import { useRouter } from 'vue-router'
// 初始化路由
const $router = useRouter()

//初始化axios 实例
const requset = axios.create({
  timeout: 5 * 1000,
  baseURL: 'http://192.168.124.6:3000/'
})
requset.interceptors.request.use((config) => {
  //预处理
  //Authorization为后端要求新增的属性
  const token = sessionStorage.getItem('token') 
  if(token){
    config.headers.Authorization = token
  }
  return config
})
// 响应拦截
requset.interceptors.response.use((res) => {
  // if()
  return res
}, (err) => {
  // 根据后端返回的提示 
  if(err.response.data.code === '1000'){
    sessionStorage.clear()
    $router.replace({ path: '/home' })
  }
  message.error(err.response.data.msg)
  return Promise.reject(err.response.data.msg)
})

switch (process.env.NODE_ENV) {
  case 'production':
    // 生产环境，部署到服务器上的环境
    axios.defaults.baseURL = 'http://192.168.124.6:3000/';
    break;
  // case 'test':
  //   //设置测式环境的接口地址
  //   axios.defaults.baseURL = 'http://192.168.124.6:3000/';
  //   break;
  //   //开发环境接口地址
  default:
    //process.env.NODE_ENV 默认为development（开发）环境
    axios.defaults.baseURL = 'http://192.168.124.6:3000/'
}


//  使用Promise 再次封装接口请求
export function http(url, params = {}, method = 'get') {
  return new Promise((resolve, reject) => {
    requset[method.toLocaleLowerCase()](url, params)
      .then(res => {
        resolve(res.data)
      }, 
      err => { 
        reject(err);
      }).catch((error) => {
        reject(error);
      });
  })
}